%% main.tex --- файл-обертка для диплома

\documentclass[russian,utf8,simple,floatsection]{eskdtext} 

\include{defs}  % вставляем содержимое служебных инструкций из defs.tex

\ESKDcolumnII{Разработка пользовательского интерфейса}
\setcounter{section}{6}
\begin{document}
\section{Разработка пользовательского интерфейса.}
Эргономика включается в процессы разработки и тестирования
программного продукта как часть системы качества. Разработка
пользовательского интерфейса (ПИ) ведется параллельно дизайну
программного продукта в целом и в основном предшествует его
имплементации. Процесс разработки ПИ разбивается на этапы жизненного
цикла: 
\begin{itemize}
\item Анализ трудовой деятельности пользователя, объединение
  бизнес-функций в роли. 
\item Построение пользовательской модели данных, привязка объектов к
  ролям и формирование рабочих мест. 
\item Формулировка требований к работе пользователя и выбор
  показателей оценки пользовательского интерфейса. 
\item Разработка обобщенного сценария взаимодействия пользователя с
  программным модулем (функциональной модели) и его предварительная
  оценка пользователями и Заказчиком. 
\item Корректировка и детализация сценария взаимодействия, выбор и
  дополнение стандарта (руководства) для построения прототипа. 
\item Разработка макетов и прототипов ПИ и их оценка в деловой игре,
  выбор окончательного варианта. 
\item Имплементация ПИ в коде, создание тестовой версии. 
\item Разработка средств поддержки пользователя (пользовательские
  словари, подсказки, сообщения, помощь и пр.) и их встраивание в
  программный код. 
\item Usability тестирование тестовой версии ПИ по набору раннее
  определенных показателей. 
\item Подготовка пользовательской документации и разработка программы
  обучения. 
\end{itemize}

Эргономические цели и показатели качества программного продукта 

Приложение разрабатывается для обеспечения работы пользователя,
т.е. для того чтобы он с помощью компьютерной программы быстрее и
качественнее решал свои производственные задачи. 

С точки зрения эргономики, самое важное в программе — создать такой
пользовательский интерфейс, который сделает работу эффективной и
производительной, а также обеспечит удовлетворенность пользователя от
работы с программой. 

Эффективность работы означает обеспечение точности, функциональной
полноты и завершенности при выполнении производственных заданий на
рабочем месте пользователя. Создание ПИ должно быть нацелено на
показатели эффективности: 

Точность работы определяется тем, в какой степени произведенный
пользователем продукт (результат работы), соответствует предъявленным
к нему требованиям. Показатель точности включает процент ошибок,
которые совершил пользователь: число ошибок набора, варианты ложных
путей или ответвлений, число неправильных обращений к данным, запросов
и пр. 

Функциональная полнота отражает степень использования первичных и
обработанных данных, списка необходимых процедур обработки или
отчетов, число пропущенных технологических операций или этапов при
выполнении поставленной пользователю задачи. Этот показатель может
определяться через процент применения отдельных функций в РМ. 

Завершенность работы описывает степень исполнения производственной
задачи средним пользователем за определенный срок или период, долю
(или длину очереди) неудовлетворенных (необработанных) заявок, процент
продукции, находящейся на промежуточной стадии готовности, а также
число пользователей, которые выполнили задание в фиксированные сроки. 

Последовательность действий и набор инструментальных средств
пользователя в ПИ должны быть подчинены технологическому процессу
выполнения производственного задания. 

Не надо бояться сложности системы, надо избегать такого интерфейса,
который не соответствует алгоритму решения пользовательских задач. 

Необходимо тщательно продумать и осознать сценарий взаимодействия
программы с пользователем, приведя его к оптимальной (относительно
рассмотренных показателей) системе выполнения задач, и реализовать ПИ
в соответствии с этой системой. 

Для того, чтобы разобраться в технологии решения задач пользователя,
разработчику необходимо выяснить следующие моменты (исследуя
деятельность пользователя): 
\begin{itemize}
\item Какая информация необходима пользователю для решения задачи?
\item Какую информацию пользователь может игнорировать (не учитывать)? 
\item Совместно с пользователем разделить всю информацию на
  сигнальную, отображаемую, редактируемую, поисковую и
  результирующую. 
\item Какие решения пользователю необходимо принимать в процессе
  работы с программой? 
\item Может ли пользователь совершать несколько различных действий
  (решать несколько задач) одновременно? 
\item Какие типовые операции использует пользователь при решении задачи?
\item Что произойдет, если пользователь будет действовать не по
  предписанному Вами алгоритму, пропуская те или иные шаги или обходя
  их? 
\end{itemize}
Производительность работы отражает объем затраченных ресурсов при
выполнении задачи, как вычислительных, так и психофизиологических. 

Дизайн ПИ должен обеспечивать минимизацию усилий пользователя при
выполнении работы и приводить к: 
\begin{itemize}
\item сокращению длительности операций чтения, редактирования и поиска
  информации, 
\item уменьшению времени навигации и выбора команды,
\item повышению общей продуктивности пользователя, заключающейся в
  объеме обработанных данных за определенный период времени. 
\item увеличению длительности устойчивой работы пользователя и др. 
\end{itemize}
Сокращение непроизводственных затрат и усилий пользователя - важная
составляющая качества программного обеспечения. 

Для оценки продуктивности используются соответствующие показатели,
проверяемые специалистами по эргономике в процессе usability
тестирования рабочего прототипа. 

Формирование таких показателей происходит в процессе определения
требований к ПИ при изучении следующих вопросов: 
\begin{itemize}
\item Что от пользователя требуется в первую очередь?
\item Сколько информации, требующей обработки, поступает пользователю за период времени?
\item Каковы требования к точности и скорости ввода информации?
\item На какие операции пользователь тратит больше всего времени?
\item Чем мы можем облегчить работу пользователя при решении типовых
  задач?
\end{itemize}

Удовлетворенность пользователя от работы тесно связана с комфортностью
его взаимодействия с приложением, и способствует сохранению
профессиональных кадров на предприятии Заказчика за счет
привлекательности работы на данном рабочем месте. 

Требования к удобству и комфортности интерфейса возрастают с
увеличением сложности работ и ответственности пользователя за конечный
результат. Высокая удовлетворенность от работы достигается в случае: 
\begin{itemize}
\item Прозрачной для пользователя навигации и целевой ориентации в
  программе. Главное, чтобы было понятно, куда идем, и какую операцию
  программа после этого шага произведет. 
\item Ясности и четкости понимания пользователем текстов и значения
  икон. В программе должны быть те слова и графические образы, которые
  пользователь знает или обязан знать по характеру его работы или
  занимаемой должности. 
\item Быстроты обучения при работе с программой, для чего необходимо
  использовать преимущественно стандартные элементы взаимодействия, их
  традиционное или общепринятое их расположение. 
\item Наличия вспомогательных средств поддержки пользователя
  (поисковых, справочных, нормативных), в том числе и для принятия
  решения в неопределенной ситуации (ввод по умолчанию, обход
  <<зависания>> процессов и др.). 
\end{itemize}
Для оценки необходимого уровня удобства интерфейса также используются
специальные опросники, формуляры, чек-листы, однако к данной работе
лучше привлекать специалистов по эргономике. 

Удобный интерфейс помогает пользователю справиться с усталостью и
напряжением при работе в условиях высокой ответственности за
результат. 

Проблемы, возникающие на этапе разработки прототипа GUI и варианты их решения
\begin{enumerate}
\item Учет особенностей устройств ввода/вывода информации,
  используемых пользователем, например: 
  \begin{itemize}
  \item размер экрана монитора
  \item разрешение экрана
  \item цветовая палитра
  \item характеристики звуковой (качество воспроизведения речи) и
    видеокарты (скорость вывода при анимации) 
  \item вид мыши (с роликом или без)
  \item тип клавиатуры (“прямая”, “косая”)
  \item необходимость дополнительного оборудования (штрих-декодера,
    светового пера сенсорного экрана и др.). 
  \end{itemize}
  
\item Специфика интерактивных элементов, связанная с выбором платформы, стандартных библиотек:
  \begin{itemize}
  \item программная организация ввода/вывода информации
  \item изменение и создание новых элементов форм (контролов)
  \item приобретение нестандартных библиотек у других фирм.
  \end{itemize}

\item Выбор технологии и методов ведения диалога программы с пользователем:
  \begin{itemize}
  \item степень активности пользователя при взаимодействии
    (автоматический режим или перехват управления программой на себя,
    визарды, обеспечение доступа ко всем средствам интерфейса
    независимо от действий пользователя) 
  \item степень учета ситуации (контекстные подсказки, меню дальнейших
    событий или объектов, запоминание типичных путей диалога) 
  \item соответствие ожиданиям пользователя (предсказание,
    предобработка, предформатирование) 
  \item устойчивость, терпимость к ошибкам пользователя путем
    исправления типичных ошибок 
  \item дублирование вручную отдельных функций системы и
    дополнительные контрольные процедуры работы отдельных режимов 
  \item настройка ПИ на различный уровень подготовки пользователя
    (образность или метафоричность предметной области в противовес
    сокращениям и горячим клавишам) 
  \item степень адаптивности ПИ под предпочтения пользователя
    (изменение способа и порядка отображения, перекомпоновка экрана,
    выбор отдельных характеристик (стиля) и пр.) 
  \item настройка ПИ на специфику задачи (новый формат данных,
    изменение набора объектов, дополнение атрибутов объектов) 
  \end{itemize}

\item Размещение информации и управляющих элементов в поле экрана, в
  окне. При композиции экрана необходимо учитывать ограниченные
  размеры пространства экрана, в связи с чем возникает задача
  оптимального расположения максимально возможного объема информации
  путем: 
  \begin{itemize}
  \item логической увязкой данных в зависимости от алгоритма работы
    пользователя, а не ориентацией на структуру и последовательность
    физических таблиц данных 
  \item определения уровня “детальности – обобщенности” вывода
    информации (нахождение компромисса между желанием вывести много
    записей одновременно и/или сразу увидеть детальную информацию по
    каждой из них) 
  \item выделения важной информации на экране 
  \item четкого определения основных и вспомогательных блоков
    информации 
  \item определения статических полей на экране, а также полей, где
    информация периодически изменяется 
  \item избегания перекрывающихся окон на экране 
  \item применения принципов гармонии при компоновке экрана
    (симметрия, баланса масс, соблюдение пропорций, сочетание цветов) 
  \end{itemize}
\item Формирование обратной связи между пользователем и приложением: 
  \begin{itemize}
  \item показ актуального состояния системы, режима работы системы
    (автономного, штатного, защищенного и пр.) и режима взаимодействия
    (например, отображение, редактирование или поиск данных). 
  \item вывод отдельных, важных для рабочей операции данных и
    показателей 
  \item отражение действий пользователя (нажатия клавиш, запуск
    процесса, динамика выполнения процесса, получение ожидаемого и
    иного результата) 
  \item ясность и информативность сообщений системы.
  \end{itemize}
\item Проектирование панелей меню и инструментов (toolbars) и выбор пунктов в них:
  \begin{itemize}
  \item логическая и смысловая группировка пунктов
  \item фиксированная позиция панелей на экране
  \item ограничение на ширину списка выборов и шагов (глубины) меню 
  \item использование привычных названий, широко распространенных
    икон-пиктограмм, традиционных икон-символов и аккуратное введение
    сокращений 
  \item размещение наиболее часто используемых пунктов (обычно в
    начале списка). 
  \end{itemize}
\item Разработка средств ориентации и навигации:
  \begin{itemize}
  \item легкость определения своего местонахождения и указание
    направления следования 
  \item удобный переход от обобщенного взгляда до конкретных деталей
    (варьирование степени детализации рассматриваемых объектов) 
  \item быстрый поиск в списке или таблице
  \item указание на дополнительно существующую информацию и способ ее
    получения 
  \item использование средств листания и прокрутки.
  \end{itemize}
\item Создание форм для ввода данных:
  \begin{itemize}
  \item использования одного или нескольких механизмов ввода в рамках
    режима (клавиатура, мышь, штрих-декодер, световое перо, др.) 
  \item определение способов ввода данных (таблицы, списки, простая форма, меню и пр.)
  \item минимизация объема ввода
  \item выделение редактируемых обязательных и необязательных, а также нередактируемых полей
  \item использование механизмов быстрого ввода (по умолчанию, сокращения, с продолжением и пр.)
  \item Выделение введенной или отредактированной информации.
  \end{itemize}
\end{enumerate}

Принципы реализации пользовательского интерфейса:

\emph{Стилевая гибкость} - 
возможность использовать различные интерфейсы с одним и тем же
приложением, на практике реализуется в виде набора “skins”, для
web-интерфейсов – с помощью таблицы стилей, в том числе возможность в
выборе пользователем собственных установок ПИ (цвет, иконы, подсказки
и пр.). 

\emph{Совместное наращивание функциональности} - 
возможность развивать приложение без разрушения (т.е. оставаясь в
рамках) существующего интерфейса. 

\emph{Масштабируемость} - 
возможность легко настраивать и расширять как интерфейс, так и само
приложение при увеличении числа пользователей, рабочих мест, объема и
характеристик данных. 

\emph{Адаптивность к действиям пользователя} - 
приложение должно допускать возможность ввода данных и команд
множеством разных способов (клавиатура, мышь, другие устройства) и
многовариативность доступа к прикладным функциям (иконы, <<горячие
  клавиши>>, меню …), кроме того программа должна учитывать возможность
перехода и возврат от окна к окну, от режима к режиму, и правильно
обрабатывать такие ситуации.

\emph{Независимость в ресурсах} - 
для создания пользовательского интерфейса должны предоставляться
отдельные ресурсы, направленные на хранение и обработку данных,
необходимых для поддержки пользователя (пользовательские словари,
контекстно-зависимые списки, наборы данных по умолчанию или по
последнему запросу, истории запросов и пр.)

\emph{Переносимость} - 
при переходе на другую аппаратную (программную) платформу, должен
осуществляется автоматически перенос и пользовательского интерфейса, и
конечного приложения. 
\end{document}
